package io.sdph.products;

import io.sdph.products.model.Product;

import java.util.Map;


/**
 * Interfejs managera zarządzającego magazynem produktów.
 * 
 * @author Konrad Szewczyk
 * @since 0.0.1
 */
public interface IMagazineManager {
	
	/**
	 * Dodaje daną ilość produktu na magazyn.
	 * 
	 * @param product
	 * @param quantity
	 */
	void addProduct(Product product, long quantity);
	
	/**
	 * Odejmuje daną ilość produktu na magazynie.
	 * 
	 * @param product
	 * @param quantity
	 */
	void removeProduct(Product product, long quantity);
	
	/**
	 * Ustawia daną ilość produktu na magazynie.
	 * 
	 * @param product
	 * @param quantity
	 */
	void setQuantityOfProduct(Product product, long quantity);
	
	/**
	 * Pobiera ilość produktów z magazynu.
	 * 
	 * @param product
	 * @param quantity
	 */
	long getQuantityOfProduct(Product product);
}
